const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/mongo-relation')
const Category = mongoose.model('Category',new mongoose.Schema({
    name:{type:String}
}))
//博客
const postSchema = new mongoose.Schema({
    title:{type:String},
    body:{type:String},
    //ref->关联的模型
    //意思是分类category是id类型，而且它关联的是Category模型（集合）里的id
    //这种关联字段只要定义好了type和ref,就能把它查出来
    //category:{type:mongoose.SchemaTypes.ObjectId,ref:'Category'}
    categories:[{type:mongoose.SchemaTypes.ObjectId,ref:'Category'}]
})
const Post = mongoose.model('Post',postSchema)
async function main(){
    console.log(await Category.find())
    //有了分类集合，下一步要把帖子的分类关联到Category集合里的id
    const cat1 = await Category.findOne({name:'nodejs'})
    const cat2 = await Category.findOne({name:'vuejs'})
    const post1 = await Post.findOne({title:'我的第1篇帖子'})
    const post2 = await Post.findOne({title:'我的第2篇帖子'})
    //post1.categories = cat1._id
    //mongoose比较只能，不传_id,它也会找_id
    post1.categories = [cat1,cat2]
    post2.categories = [cat2]
    //保存到数据库
    await post1.save()
    await post2.save()
    // const posts = await Post.find()
    // console.log(posts)
    //已经关联上了id，怎么把对应的分类信息查出来呢？
    //在前面查找数据后面加.populate,表示要把关联数据带出来，参数是博客文档中的关联属性名称
    const posts = await Post.find().populate('categories')
    console.log(posts)
    //假如一篇文章有多个分类呢？
    //在博客模型中把原来的category换成数组，表示它不是一个单一的值，可以有多个值
}
main()